home *** CD-ROM | disk | FTP | other *** search
/ Gekkan Dennou Club 147 / Gekkan Dennou Club - 2000.8 Vol. 147 (Japan).7z / Gekkan Dennou Club - 2000.8 Vol. 147 (Japan) (Track 1).bin / fdimg / oh!.2hd / OH!DEN_B.LZH / TOOLS / DC_VIEW / DROPICON.C < prev    next >
Text File  |  1995-03-20  |  3KB  |  90 lines

  1. /******************************************************************************
  2.  *    dropicon.c:    アイコンのドロップ処理
  3.  ******************************************************************************
  4.  *
  5.  *
  6.  */
  7. #include <stdio.h>
  8. #include <ctype.h>
  9. #include <stdlib.h>
  10. #include <string.h>
  11. #include <stat.h>
  12. #include <io.h>
  13. #include <jfctype.h>
  14. #include <doslib.h>
  15. #include <event.h>        /* イベントマンを利用するときに必要    */
  16. #include <sxgraph.h>        /* グラフ系マネージャを利用するときに必要 */
  17. #include <window.h>        /* ウィンドウマンを利用するときに必要    */
  18. #include <dialog.h>        /* ダイアログマンを利用するときに必要    */
  19. #include <task.h>        /* タスクマンを利用するときに必要    */
  20. #include "DC.h"            /* このプログラム固有のヘッダファイル    */
  21.  
  22. /******************************************************************************
  23.  *    dropIcon():    アイコンのドロップ処理
  24.  ******************************************************************************
  25.  *    引数:    ComVal *pcv    共通変数へのポインタ
  26.  */
  27. void dropIcon(ComVal *pcv)
  28. {
  29.     int errCode, len;
  30.     Drag *dragPtr;            /* ドラッグポインタ        */
  31.     Cell *pcell;            /* セルレコードへのポインタ    */
  32.     IcState *pis;            /* アイコン管理レコードへのポインタ */
  33.     char fWork[TS_NAMEMAX], ext[TS_NAMEMAX];
  34.  
  35.     /* ドラッグポインタを取得する */
  36.     errCode = TSGetDrag(&dragPtr);
  37.     if (errCode < 0)
  38.         /* ドラッグレコードが無い */
  39.         return;
  40.  
  41.     MMHdlLock(dragPtr->cellList);    /* セルリストへのハンドルをロックする */
  42.     pcell = *dragPtr->cellList;    /* セルレコードへのポインタを取得する */
  43.     TSHideDrag();            /* ラバーバンドを消去する    */
  44.     /* セルレコードの情報の種類がアイコン管理レコード(上位ワードが'FS')
  45.        か? */
  46.     if (HIWORD(pcell->kind) == 'FS') {
  47.         /* アイコンは1つ(ドラッグレコードのセルリストの長さがアイコン
  48.            管理レコードを含むセルレコードの長さと同一の場合)か? */
  49.         if (dragPtr->size == sizeof(IcState) + 8 ) {
  50.             /* アイコン管理レコードへのポインタを取得する */
  51.             pis = (IcState *) pcell->data;
  52.             /* ファイルの属性をチェックする */
  53.             if ((pis->attrib & ATTRMASK) == TS_ARCH) {
  54.                 /* アイコンのフルパスを取得する */
  55.                 len = TSISRecToStr(
  56.                     pis, /* アイコン管理レコード    */
  57.                     fWork); /* パス名格納ポインタ    */
  58.                     stcgfe(ext,fWork);
  59.                     if (len >= 0) {
  60.                         /* ドラッグを終了する */
  61.                         TSEndDrag(TS_FINISH);
  62.                         /* データ読み込み */
  63.                         if (GetData(pcv, fWork)) {
  64.                             drawGraph(pcv, 0);
  65.                         } else {
  66.                             pcv->errorCode = 1;
  67.                         }
  68.                         /* エラーが発生したか? */
  69.                         if (pcv->errorCode != 0) {
  70.                             /* エラーダイアログを表示する */
  71.                             DMError(D_CONFIRM,"エラーが発生しました!");
  72.                             pcv->errorCode = 0; 
  73.                         }
  74.                     } else    /*ファイル名の取得に失敗した    */
  75.                         /* アイコンを元の位置にはじき飛ばして
  76.                            終了する */
  77.                     TSEndDrag(TS_PUTBACK);
  78.             } else        /* ファイルアイコン以外の場合    */
  79.                 /* アイコンを元の位置にはじき飛ばして終了する */
  80.                 TSEndDrag(TS_PUTBACK);
  81.         } else
  82.             /* アイコン2つ以上か他のドラッグレコードだったら
  83.                アイコンを元の位置にはじき飛ばして終了する */
  84.             TSEndDrag(TS_PUTBACK);
  85.     }
  86.     /* セルリストへのハンドルのロックを解除する */
  87.     MMHdlUnlock(dragPtr->cellList);
  88. }
  89. STR@ =EdEV3.00<@(!%G0JHH     
  90. S((SBxヨH vケ > >Ohh$000ヨ=4